package com.uqbar.arkanoid;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.uqbar.componentes.Fondo;
import com.uqbar.componentes.LabelInicial;
import com.uqbar.componentes.Ladrillo;
import com.uqbar.componentes.Marcador;
import com.uqbar.componentes.Pelota;
import com.uqbar.componentes.Raqueta;
import com.uqbar.vainilla.GameScene;

import comportamientos.RaquetaComportamiento;

public class ArkanoidScene extends GameScene{
	
	private Fondo fondo;
	private Raqueta raqueta;
	private Pelota pelota;
	private Ladrillo ladrillo;
	private Ladrillo ladrillo2;
	private Ladrillo ladrillo3;
	private Ladrillo ladrillo4;
	private Marcador marcador;
	private LabelInicial labelInicial;

	public ArkanoidScene() {
		super();
		
		BufferedImage imgFondo = null;
	    try {
	    	imgFondo = ImageIO.read(new File("fondito.PNG"));
	    }
	    catch (IOException ex) {
	    	System.out.println("No se pudo leer la imagen");
	    }
		
		this.fondo = new Fondo(0, 0, imgFondo);
		
		RaquetaComportamiento comportamiento = new RaquetaComportamiento();
		this.raqueta = new Raqueta(350, 500, 100, 20, Color.blue, 500, 0, 799, comportamiento);
		
		this.pelota = new Pelota(20, 00.0, 100.0, new Vector2D(-50, -50), 550);
		
		/*
		this.ladrillo = new Ladrillo(250, 100, 100, 20, Color.blue);
		this.ladrillo2 = new Ladrillo(250, 130, 100, 20, Color.blue);
		this.ladrillo3 = new Ladrillo(450, 100, 100, 20, Color.blue);
		this.ladrillo4 = new Ladrillo(450, 130, 100, 20, Color.blue);
		*/
		BufferedImage imgLadrillo = null;
	    try {
	    	imgLadrillo = ImageIO.read(new File("ladrilloNaranja.PNG"));
	    }
	    catch (IOException ex) {
	    	System.out.println("No se pudo leer la imagen");
	    }
	    this.ladrillo = new Ladrillo(150, 100, imgLadrillo);
	    this.ladrillo2 = new Ladrillo(250, 130, imgLadrillo);
	    this.ladrillo3 = new Ladrillo(550, 100, imgLadrillo);
	    this.ladrillo4 = new Ladrillo(450, 130, imgLadrillo);
		
		this.marcador = new Marcador(50, 20, Color.black);
		
		this.labelInicial = new LabelInicial(290, 300, Color.black, "Presione ESPACIO para iniciar");
		
		this.setFondo(fondo);
		this.setRaqueta(raqueta);
		this.setPelota(pelota);
		this.setLadrillo(ladrillo);
		this.setLadrillo2(ladrillo2);
		this.setLadrillo3(ladrillo3);
		this.setLadrillo4(ladrillo4);
		this.setMarcador(marcador);
		this.setLabelInicial(labelInicial);
		
	}
	
	public Fondo getFondo(){
		return fondo;
	}
	
	public void setFondo(Fondo fondo){
		this.addComponent(fondo);
		this.fondo = fondo;
	}
	
	public Raqueta getRaqueta() {
		return raqueta;
	}
	
	public void setRaqueta(Raqueta raqueta) {
		this.raqueta = raqueta;
		this.addComponent(raqueta);
	}
	
	public Pelota getPelota() {
		return pelota;
	}

	public void setPelota(Pelota pelota) {
		this.addComponent(pelota);
		this.pelota = pelota;
	}
	
	public Ladrillo getLadrillo() {
		return ladrillo;
	}

	public void setLadrillo(Ladrillo ladrillo) {
		this.addComponent(ladrillo);
		this.ladrillo = ladrillo;
	}
	
	public void setLadrillo2(Ladrillo ladrillo) {
		this.addComponent(ladrillo);
		this.ladrillo2 = ladrillo;
	}
	
	public Ladrillo getLadrillo2() {
		return ladrillo2;
	}
	
	public void setLadrillo3(Ladrillo ladrillo) {
		this.addComponent(ladrillo);
		this.ladrillo3 = ladrillo;
	}
	
	public Ladrillo getLadrillo3() {
		return ladrillo3;
	}
	
	public void setLadrillo4(Ladrillo ladrillo) {
		this.addComponent(ladrillo);
		this.ladrillo4 = ladrillo;
	}
	
	public Ladrillo getLadrillo4() {
		return ladrillo4;
	}
	
	public void setMarcador(Marcador marcador) {
		this.addComponent(marcador);
		this.marcador = marcador;
	}
	
	public Marcador getMarcador() {
		return marcador;
	}
	
	public void setLabelInicial(LabelInicial labelInicial){
		this.addComponent(labelInicial);
		this.labelInicial = labelInicial;
	}
	
	public LabelInicial getLabelInicial(){
		return labelInicial;
	}
	
	public GameScene buildEndScene(Marcador marcador) {
		return new EndScene(marcador.getMensaje(), 300, 200);
	}	
	
}
